'''
巩固案例
1、主人与狗

有一天，主人带着旺财到操场散步，主人用脚轻轻的踢了旺财，旺财高兴的摇摇尾巴。
但是一个陌生人准备靠近旺财，被旺财发现了，于是向陌生人疯狂的咬了一口，
陌生人同时也向旺财踢了一脚。

用面向对象的知识，实现以上场景

设计
1.人类
1)属性:名字,性别
2)方法:散步,靠近,踢

2.狗类
1)属性:名字,主人
2)方法:高兴,生气,摇尾巴,咬
'''
# 人类
class Person:
    def __init__(self,name,sex="男"):
        self.name = name
        self.sex = sex
    # 散步
    def walk(self):
        print(f"{self.name}正在散步......")
    # 靠近
    def near(self,obj):
        print(f"{self.name}正在靠近{obj.name}.....")
        obj.neared(self)
    # 踢
    def kick(self,obj):
        print(f"{self.name}正在踢{obj.name}.....")
        obj.kicked(self)
    
# 狗类
class Dog:
    def __init__(self,name,owner=None):
        self.name = name
        self.owner = owner # 主人
    # 高兴
    def happy(self):
        print(f"{self.name}很高兴......")
        self.wag()
    # 生气
    def anger(self,obj):
        print(f"{self.name}向{obj.name}生气......")
        self.bite(obj)
    # 摇尾巴
    def wag(self):
        print("遥遥尾巴......")
    # 咬
    def bite(self,obj):
        print(f"{self.name}疯狂的嘶咬{obj.name}......")

    # 被靠近反映
    def neared(self,obj):
        if obj==self.owner:
            self.happy()
        else:
            self.anger(obj)
    # 被踢
    def kicked(self,obj):
        if obj==self.owner:
            self.happy()
        else:
            self.anger(obj)

'''
2人和一条狗
其中一个人是 主人,一个是陌生人
'''
p1 = Person("小明")
p2 = Person("小华")

d = Dog("旺财",p1)    # 小明是旺财的主人

p2.near(d)  # 让小华去靠近汪才
p1.kick(d)  # 让小明去ti汪才
